在創立模型架構前,我想先來說明一下卷積神經網路是什麼。不然直接開始實作模型架構的話,可能做完後許多人也只會依樣畫葫蘆,不知道該如何去修改。
在代入卷積的概念前,先說神經網路是什麼。神經網路就如同他的名字,是以模擬人類腦袋神經結構來實踐的。先將所有的輸入降維至一維,放入輸入層之中,接著透過各個不同的權重,傳到隱藏層中,在隱藏層中一樣有各種權重連接各層,隱藏層可以不只一層,層數由設計者自己實驗做出最好的效果,最後傳到輸出層呈現結果。
圖片來源:https://zh.wikipedia.org/zh-tw/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF
而CNN就是在神經網路的基礎上,加上卷積層、池化層。
卷積層就是透過濾鏡在原先的圖片從左上角向右再向下遍歷整張圖片直至右下角,以不同的濾鏡提取出照片的特徵值。簡單來說就是讓圖片的特徵變得明顯,讓我們在後面的訓練是能夠更加有效率。
圖片來源:https://www.projectpro.io/article/introduction-to-convolutional-neural-networks-algorithm-architecture/560
最常見的池化層種類為最大池化,這也是我們在之後的模型之中所會使用的池化層種類。他的概念是透過設定的池化層大小切割原圖片,接著在各區域中去取得該範圍內的最大值,藉此縮小圖片的大小。這樣做的目的在於取出最明顯的特徵以及減少圖片的運算量。
圖片來源:https://zh.wikipedia.org/zh-tw/%E5%8D%B7%E7%A9%8D%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF
最終,一項CNN模型架構示意圖就如下圖。
圖片來源:https://commons.wikimedia.org/wiki/File:Typical_cnn.png?uselang=zh-tw